home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
fb386smp
/
fs
/
fs32.bas
< prev
Wrap
BASIC Source File
|
1994-09-20
|
12KB
|
307 lines
1000 '================================================================
1010 ' 32KÉF+âeâLâXâgùpâtâ@âCâïâZâîâNâ^
1020 '================================================================
1030 CLEAR ,,,,1024:LOADM "DOS.REX",0
1040 SCREEN@ 1:CLS
1050 GOSUB *F_Åëè·ë╗
1060 F_POSX=10:F_POSY=5:GOSUB *F_âtâ@âCâïâZâîâNâ^
1070 CLS
1080 PRINT "ĵô╛é╡é╜âhâëâCâuû╝:";F_FILEDRV$
1090 PRINT "ĵô╛é╡é╜âpâXû╝ :";F_FILEPATH$
1100 PRINT "ĵô╛é╡é╜âtâ@âCâïû╝:";F_FILENAME$
1110 A$=INPUT$(1):GOTO 1060
1120 '----------------------------------------------------------------
1130 *F_Åëè·ë╗
1140 '----------------------------------------------------------------
1150 DEFLNG F
1160 SEACHICNSEL&=0:MEMCPY&=5 :GETFREESPACE&=10:ISFIXED&=15:ISEXIST&=20
1170 FINDFIRST&=25 :FINDNEXT&=30:GETDRV&=35 :GETDIR&=40
1180 '
1190 DIM F_DRV(26) ,F_NAME$(0) ,F_SIZE&(0) ,F_ATTR&(0),F_DATE$(0)
1200 DIM F_BTNX1(18),F_BTNY1(18),F_BTNX2(18),F_BTNY2(18)
1210 DIM F_ICN(9),F_PAT(((32*32/8)+3)/4+1),F_PAT1(((32*32/8)+3)/4+1)
1220 '
1230 F_BACKR=64:F_LWHITER=170
1240 F_BACKG=64:F_LWHITEG=170
1250 F_BACKB=64:F_LWHITEB=170
1260 F_NUM=0:F_WLD$="":F_STR$=SPACE$(100)
1270 F_ICN_SEC=CALLM(SEACHICNSEL&)
1280 '
1290 RESTORE *F_â{â^âôê╩Æuâfü[â^
1300 FOR F_I=0 TO 9
1310 READ F_BTNX1(F_I),F_BTNY1(F_I),F_BTNX2(F_I),F_BTNY2(F_I)
1320 NEXT
1330 FOR F_I=10 TO 17
1340 F_BTNX1(F_I)=F_BTNX1(9):F_BTNX2(F_I)=F_BTNX2(9)
1350 F_BTNY1(F_I)=F_BTNY1(F_I-1)+1:F_BTNY2(F_I)=F_BTNY2(F_I-1)+1
1360 NEXT
1370 '
1380 RESTORE *F_âAâCâRâôâfü[â^:FOR F_I=0 TO 9:READ F_ICN(F_I):NEXT
1390 RETURN
1400 '
1410 *F_â{â^âôê╩Æuâfü[â^
1420 DATA 0, 1, 2, 1, 3, 1, 5, 1, 6, 1, 8, 1, 33, 1,46, 1
1430 DATA 48, 9,49, 9, 48,10,49,10, 36,11,41,11, 44,11,49,11
1440 DATA 11,11,24,11, 10, 2,46, 2
1450 *F_âAâCâRâôâfü[â^
1460 DATA 70,0,72,77,0,77,76,78,69,79
1470 '
1480 '----------------------------------------------------------------
1490 *F_âtâ@âCâïâZâîâNâ^
1500 '----------------------------------------------------------------
1510 F_FILENAME$="":F_FILEPATH$="":F_FILEDRV$="":F_TOP=0
1520 MOUSE 0:MOUSE 1,160,120,1:F_SHAPE=80:GOSUB *F_â}âEâXâJü[â\âïÉ▌ÆΦ
1530 GOSUB *F_ëµû╩ò\Ī
1540 GOSUB *F_âhâëâCâuÅεò±Äµô╛:GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
1550 GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
1560 *F_LOOP
1570 GOSUB *F_â}âEâXâ{â^âôâ`âFâbâN
1580 ON F_BTN+1 GOTO 1690,1760,1810,1870,1930,1960,1990,2050,2070
1590 '---âèâXâg
1600 F_I=F_TOP+F_BTN-8:IF F_I>F_NUM GOTO *F_LOOP
1610 IF F_ATTR&(F_I) = &H10 THEN
1620 F_CMD$="cd "+F_NAME$(F_I):SHELL F_CMD$:GOTO 1760
1630 ELSE
1640 F_FILENAME$=LEFT$(F_NAME$(F_I)+SPACE$(14),12)
1650 LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
1660 ENDIF
1670 GOTO *F_LOOP
1680 '---<
1690 IF F_DRV(0)-1<>0 THEN F_DRV(0)=F_DRV(0)-1 ELSE F_DRV(0)=26
1700 IF F_DRV(F_DRV(0))<0 THEN 1690
1710 LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
1720 F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
1730 WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
1740 IF F_BTN_ATR=0 THEN 1760 ELSE *F_LOOP
1750 '---A
1760 F_CMD$=CHR$(&H40+F_DRV(0))+":":SHELL F_CMD$
1770 GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
1780 F_TOP=0:GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
1790 GOTO *F_LOOP
1800 '--->
1810 IF F_DRV(0)+1<>27 THEN F_DRV(0)=F_DRV(0)+1 ELSE F_DRV(0)=1
1820 IF F_DRV(F_DRV(0))<0 THEN 1810
1830 LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
1840 F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
1850 WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
1860 IF F_BTN_ATR=0 THEN 1760 ELSE *F_LOOP
1870 '---Ée
1880 CALLM GETDIR&,0,VARPTR(F_STR$)
1890 IF LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))=CHR$(0) THEN 1910
1900 SHELL "cd .."
1910 GOTO 1760
1920 '---ü¬
1930 IF F_TOP<>0 THEN F_TOP=F_TOP-1:GOSUB *F_âtâ@âCâïû╝ò\Ī
1940 GOTO *F_LOOP
1950 '---ü½
1960 IF F_TOP<F_NUM-10 THEN F_TOP=F_TOP+1:GOSUB *F_âtâ@âCâïû╝ò\Ī
1970 GOTO *F_LOOP
1980 '---Ä└ìs
1990 IF F_FILENAME$="" THEN *F_LOOP
2000 CALLM GETDIR&,0,VARPTR(F_STR$)
2010 F_FILEPATH$="\"+LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))
2020 F_FILEDRV$=CHR$(&H40+F_DRV(0))
2030 GOTO *F_BYE
2040 '---ĵÅ┴
2050 F_FILENAME$="":F_FILEPATH$="":GOTO *F_BYE
2060 '---ò╢ÄÜ
2070 LOCATE F_POSX+12,F_POSY+11:PRINT SPACE$(12)
2080 LOCATE F_POSX+12,F_POSY+11:LINE INPUT"",F_FILENAME$
2090 F_FILENAME$=LEFT$(F_FILENAME$+SPACE$(12),12)
2100 LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
2110 GOTO *F_LOOP
2120 *F_BYE
2130 MOUSE 5
2140 RETURN
2150 '----------------------------------------------------------------
2160 *F_â}âEâXâ{â^âôâ`âFâbâN
2170 '----------------------------------------------------------------
2180 F_BTN=-1:F_BTN_ATR=0
2190 WHILE F_BTN=-1
2200 WHILE MOUSE(2,0)=0:WEND:F_X=MOUSE(0):F_Y=MOUSE(1)
2210 F_I=0
2220 WHILE F_I<=17 AND F_BTN=-1
2230 F_X1=(F_POSX+F_BTNX1(F_I))*4:F_X2=(F_POSX+F_BTNX2(F_I))*4+7
2240 F_Y1=(F_POSY+F_BTNY1(F_I))*9.5!:F_Y2=(F_POSY+F_BTNY2(F_I))*9.5!+9
2250 IF F_X1<=F_X AND F_X2>=F_X AND F_Y1<=F_Y AND F_Y2>=F_Y THEN
2260 LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
2270 IF F_I<>4 AND F_I<>5 THEN WHILE MOUSE(2,0) OR MOUSE(2,1):WEND
2280 LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
2290 F_BTN=F_I
2300 ENDIF
2310 F_I=F_I+1
2320 WEND
2330 WEND
2340 IF F_BTN<>4 AND F_BTN<>5 THEN F_BTN_ATR=MOUSE(3,0):WAIT 20:F_BTN_ATR=MOUSE(3,0)
2350 RETURN
2360 '-----------------------------
2370 *F_ëµû╩ò\Ī
2380 '-----------------------------
2390 LINE((F_POSX)*4,(F_POSY)*9.5!)-((F_POSX+52)*4,(F_POSY+13)*9.5!),PSET,[F_BACKR,F_BACKG,F_BACKB],BF
2400 LINE((F_POSX)*4,(F_POSY)*9.5!)-((F_POSX+52)*4,(F_POSY+13)*9.5!),PSET,[F_LWHITER,F_LWHITEG,F_LWHITEB],B
2410 LINE((F_POSX+10)*4,(F_POSY+2)*9.5!-1)-((F_POSX+48)*4,(F_POSY+11)*9.5!-1),PSET,[F_LWHITER,F_LWHITEG,F_LWHITEB],B
2420 LOCATE F_POSX+48,F_POSY+ 9:PRINT "ü¬"
2430 LOCATE F_POSX+48,F_POSY+10:PRINT "ü½"
2440 LOCATE F_POSX+33,F_POSY+ 1:PRINT "ÉeâfâBâîâNâgâè"
2450 LOCATE F_POSX+11,F_POSY+11:PRINT "[ ]"
2460 LOCATE F_POSX+36,F_POSY+11:PRINT "[Ä└ìs] [ĵÅ┴]"
2470 RETURN
2480 '-----------------------------
2490 *F_âhâëâCâuÅ≤ï╡ò\Ī
2500 '-----------------------------
2510 LOCATE F_POSX+1,F_POSY+1:PRINT "üâ ";AKCNV$(CHR$((F_DRV(0)+&H40)));" üä"
2520 F_FREE=CALLM(GETFREESPACE&,0)
2530 LOCATE F_POSX,F_POSY+3
2540 IF F_FREE<0 THEN PRINT "ü@ö±ÅÇö⌡"
2550 IF F_FREE>=0 AND F_FREE<1024 THEN PRINT USING "###### B";F_FREE
2560 IF F_FREE>1024 AND F_FREE<1024*1024 THEN PRINT USING "####.#KB";F_FREE/1024
2570 IF F_FREE>1024*1024 THEN PRINT USING "####.#MB";F_FREE/1024/1024
2580 FOR F_I=1 TO 9:LOCATE F_POSX+10,F_POSY+F_I+1:PRINT SPACE$(37);:NEXT
2590 '
2600 CALLM GETDIR&,0,VARPTR(F_STR$)
2610 F_I=INSTR(F_STR$,CHR$(0)):F_J=F_I
2620 WHILE F_I>1 AND MID$(F_STR$,F_I,1)<>"\":F_I=F_I-1:WEND
2630 LOCATE F_POSX+11,F_POSY+1
2640 PRINT "["+LEFT$(MID$(F_STR$,F_I,F_J-F_I)+SPACE$(13),12)+"]"
2650 '
2660 LINE((F_POSX+3)*4,(F_POSY+4)*9.5!)-((F_POSX+3)*4+23,(F_POSY+4)*9.5!+23),PSET,[F_BACKR,F_BACKG,F_BACKB],BF
2670 IF F_FREE>=0 THEN
2680 CALLM MEMCPY&,&H14,VARPTR(F_PAT(0)),F_ICN_SEC,16+F_ICN(F_DRV(F_DRV(0)))*24*24/4,24*24/8
2690 PUT@((F_POSX+3)*4,(F_POSY+4)*9.5!)-((F_POSX+3)*4+23,(F_POSY+4)*9.5!+23),F_PAT,,7
2700 ENDIF
2710 RETURN
2720 '-----------------------------
2730 *F_âtâ@âCâïû╝ò\Ī
2740 '-----------------------------
2750 F_I=1
2760 WHILE F_I<=9 AND F_I+F_TOP<F_NUM
2770 LOCATE F_POSX+10,F_POSY+F_I+1
2780 IF F_ATTR&(F_I+F_TOP)=&H10 THEN
2790 PRINT "<";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(20),12);">";
2800 PRINT SPACE$(8)+F_DATE$(F_I+F_TOP)
2810 ELSE
2820 PRINT " ";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(14),12);
2830 PRINT " ";RIGHT$(SPACE$(14)+STR$(F_SIZE&(F_I+F_TOP)),8);
2840 PRINT F_DATE$(F_I+F_TOP)
2850 ENDIF
2860 F_I=F_I+1
2870 WEND
2880 RETURN
2890 '-----------------------------
2900 *F_âhâëâCâuÅεò±Äµô╛
2910 '-----------------------------
2920 FOR F_I=1 TO 26:F_DRV(F_I)=CALLM(ISEXIST&,F_I):NEXT
2930 FOR F_I=1 TO 16
2940 F_DRV(F_I)=CALLM(ISEXIST&,F_I)
2950 IF F_DRV(F_I)>=0 THEN
2960 F_DRV(F_I)=INP(&H